gdk: Drop supports_multidevice API
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 22 Jun 2020 21:34:34 +0000 (23:34 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 23 Jun 2020 21:42:53 +0000 (23:42 +0200)
Crossing events are now detached from widget state, all tricky consequences
from getting multiple crossing events are now somewhat moot. Resort to sending
all generated crossing events, and drop this barely (ever?) used API.

docs/reference/gdk/gdk4-sections.txt
docs/reference/gtk/gtk4-sections.txt
gdk/gdksurface.c
gdk/gdksurface.h
gdk/gdksurfaceprivate.h
gtk/gtkmain.c
gtk/gtkwidget.c
gtk/gtkwidget.h
gtk/gtkwidgetprivate.h

index 23af3ca51b63b2bb664e73614a73bfe7ed51cd71..8b72b2ddb24410d76a0649e269b0ed3f4bb7c9d9 100644 (file)
@@ -207,8 +207,6 @@ GdkModifierType
 GDK_MODIFIER_MASK
 
 <SUBSECTION>
-gdk_surface_get_support_multidevice
-gdk_surface_set_support_multidevice
 gdk_surface_get_device_cursor
 gdk_surface_set_device_cursor
 
index 163a964973bb0388206f54afb3b02ff98b68f508..36983f7864a4b851284d353342328d2284628c5d 100644 (file)
@@ -4501,8 +4501,6 @@ gtk_widget_has_visible_focus
 gtk_widget_is_drawable
 gtk_widget_set_receives_default
 gtk_widget_get_receives_default
-gtk_widget_set_support_multidevice
-gtk_widget_get_support_multidevice
 gtk_widget_get_realized
 gtk_widget_get_mapped
 gtk_widget_device_is_shadowed
index df2327951f32ec41bf106ec770b10a463120e11c..93662b8b6383db3f1d0d3e70c7b59726e05a6817 100644 (file)
@@ -2186,53 +2186,6 @@ gdk_surface_beep (GdkSurface *surface)
   gdk_display_beep (surface->display);
 }
 
-/**
- * gdk_surface_set_support_multidevice:
- * @surface: a #GdkSurface.
- * @support_multidevice: %TRUE to enable multidevice support in @surface.
- *
- * This function will enable multidevice features in @surface.
- *
- * Multidevice aware surfaces will need to handle properly multiple,
- * per device enter/leave events, device grabs and grab ownerships.
- **/
-void
-gdk_surface_set_support_multidevice (GdkSurface *surface,
-                                     gboolean   support_multidevice)
-{
-  g_return_if_fail (GDK_IS_SURFACE (surface));
-
-  if (GDK_SURFACE_DESTROYED (surface))
-    return;
-
-  if (surface->support_multidevice == support_multidevice)
-    return;
-
-  surface->support_multidevice = support_multidevice;
-
-  /* FIXME: What to do if called when some pointers are inside the surface ? */
-}
-
-/**
- * gdk_surface_get_support_multidevice:
- * @surface: a #GdkSurface.
- *
- * Returns %TRUE if the surface is aware of the existence of multiple
- * devices.
- *
- * Returns: %TRUE if the surface handles multidevice features.
- **/
-gboolean
-gdk_surface_get_support_multidevice (GdkSurface *surface)
-{
-  g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE);
-
-  if (GDK_SURFACE_DESTROYED (surface))
-    return FALSE;
-
-  return surface->support_multidevice;
-}
-
 void
 _gdk_display_set_surface_under_pointer (GdkDisplay *display,
                                         GdkDevice  *device,
index 09278a1d697502de56511b5d110223e6d8e570ec..5b10920291fdfe387a7343ff00adb7ca860a692d 100644 (file)
@@ -213,12 +213,6 @@ void       gdk_surface_freeze_updates      (GdkSurface    *surface);
 GDK_AVAILABLE_IN_ALL
 void       gdk_surface_thaw_updates        (GdkSurface    *surface);
 
-GDK_AVAILABLE_IN_ALL
-void       gdk_surface_set_support_multidevice (GdkSurface *surface,
-                                                gboolean   support_multidevice);
-GDK_AVAILABLE_IN_ALL
-gboolean   gdk_surface_get_support_multidevice (GdkSurface *surface);
-
 GDK_AVAILABLE_IN_ALL
 GdkFrameClock* gdk_surface_get_frame_clock      (GdkSurface     *surface);
 
index e93fe4f62592d4a721bf549a8786570a3b3bff27..2aa1828a3599125f812069a58fcac688d7255b5a 100644 (file)
@@ -70,7 +70,6 @@ struct _GdkSurface
 
   guint destroyed : 2;
 
-  guint support_multidevice : 1;
   guint in_update : 1;
   guint frame_clock_events_paused : 1;
   guint autohide : 1;
index fd43c9eb778b4323a06a335fa1a9e02b7d6176f5..1f85565361d678b9ea113786962ee66feb952545 100644 (file)
@@ -1885,32 +1885,15 @@ synth_crossing_for_grab_notify (GtkWidget        *from,
       GdkDevice *device = devices[i];
       GdkSurface *from_surface, *to_surface;
 
-      /* Do not propagate events more than once to
-       * the same surfaces if non-multidevice aware.
-       */
       if (!from)
         from_surface = NULL;
       else
-        {
-          from_surface = _gtk_widget_get_device_surface (from, device);
-
-          if (from_surface &&
-              !gdk_surface_get_support_multidevice (from_surface) &&
-              g_list_find (info->notified_surfaces, from_surface))
-            from_surface = NULL;
-        }
+        from_surface = _gtk_widget_get_device_surface (from, device);
 
       if (!to)
         to_surface = NULL;
       else
-        {
-          to_surface = _gtk_widget_get_device_surface (to, device);
-
-          if (to_surface &&
-              !gdk_surface_get_support_multidevice (to_surface) &&
-              g_list_find (info->notified_surfaces, to_surface))
-            to_surface = NULL;
-        }
+        to_surface = _gtk_widget_get_device_surface (to, device);
 
       if (from_surface || to_surface)
         {
index 8cb6a6c2f306041a5335fbc62e44d730d4f14dbf..ffe6a0dc28dff17292c329aa529582174e4b26e6 100644 (file)
@@ -3355,13 +3355,6 @@ gtk_widget_realize (GtkWidget *widget)
 
   g_signal_emit (widget, widget_signals[REALIZE], 0);
 
-  if (priv->multidevice)
-    {
-      GdkSurface *surface = gtk_widget_get_surface (widget);
-
-      gdk_surface_set_support_multidevice (surface, TRUE);
-    }
-
   if (priv->context)
     gtk_style_context_set_scale (priv->context, gtk_widget_get_scale_factor (widget));
   else
@@ -7746,13 +7739,6 @@ gtk_widget_propagate_state (GtkWidget          *widget,
               device = devices[i];
               surface = _gtk_widget_get_device_surface (widget, device);
 
-              /* Do not propagate more than once to the
-               * same surface if non-multidevice aware.
-               */
-              if (!gdk_surface_get_support_multidevice (surface) &&
-                  g_list_find (event_surfaces, surface))
-                continue;
-
               if (!gtk_widget_is_sensitive (widget))
                 _gtk_widget_synthesize_crossing (widget, NULL, device,
                                                  GDK_CROSSING_STATE_CHANGED);
@@ -10220,54 +10206,6 @@ gtk_widget_get_allocated_baseline (GtkWidget *widget)
   return priv->baseline - margin.top - border.top - padding.top;
 }
 
-/**
- * gtk_widget_get_support_multidevice:
- * @widget: a #GtkWidget
- *
- * Returns %TRUE if @widget is multiple pointer aware. See
- * gtk_widget_set_support_multidevice() for more information.
- *
- * Returns: %TRUE if @widget is multidevice aware.
- **/
-gboolean
-gtk_widget_get_support_multidevice (GtkWidget *widget)
-{
-  GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-
-  g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
-
-  return priv->multidevice;
-}
-
-/**
- * gtk_widget_set_support_multidevice:
- * @widget: a #GtkWidget
- * @support_multidevice: %TRUE to support input from multiple devices.
- *
- * Enables or disables multiple pointer awareness. If this setting is %TRUE,
- * @widget will start receiving multiple, per device enter/leave events. Note
- * that if custom #GdkSurfaces are created in #GtkWidget::realize,
- * gdk_surface_set_support_multidevice() will have to be called manually on them.
- **/
-void
-gtk_widget_set_support_multidevice (GtkWidget *widget,
-                                    gboolean   support_multidevice)
-{
-  GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-
-  g_return_if_fail (GTK_IS_WIDGET (widget));
-
-  priv->multidevice = (support_multidevice == TRUE);
-
-  if (_gtk_widget_get_realized (widget))
-    {
-      GdkSurface *surface = gtk_widget_get_surface (widget);
-
-      if (surface)
-        gdk_surface_set_support_multidevice (surface, support_multidevice);
-    }
-}
-
 /**
  * gtk_widget_set_opacity:
  * @widget: a #GtkWidget
index 06e829d62b1f69b0324c4a8728a684a1e279695a..6a1e52f6b7978ce05428447b45d3dff9c69a2b92 100644 (file)
@@ -596,14 +596,6 @@ GDK_AVAILABLE_IN_ALL
 gboolean gtk_widget_compute_expand       (GtkWidget      *widget,
                                           GtkOrientation  orientation);
 
-
-/* Multidevice support */
-GDK_AVAILABLE_IN_ALL
-gboolean         gtk_widget_get_support_multidevice (GtkWidget      *widget);
-GDK_AVAILABLE_IN_ALL
-void             gtk_widget_set_support_multidevice (GtkWidget      *widget,
-                                                     gboolean        support_multidevice);
-
 /* Accessibility support */
 GDK_AVAILABLE_IN_ALL
 void             gtk_widget_class_set_accessible_type    (GtkWidgetClass     *widget_class,
index d281dd0f439c07eb4a91952af5b7d247d96c6cb6..b93ca063e6fb10d99b1fa2d3183279d40af21a2e 100644 (file)
@@ -84,7 +84,6 @@ struct _GtkWidgetPrivate
   guint has_grab              : 1;
   guint shadowed              : 1;
   guint child_visible         : 1;
-  guint multidevice           : 1;
   guint can_target            : 1;
 
   /* Queue-resize related flags */